package com.meihuayishu.backend.service;

import com.meihuayishu.backend.entity.Hexagram;
import com.meihuayishu.backend.entity.YaoCi;

import java.util.List;
import java.util.Optional;

public interface HexagramService {
    
    /**
     * 根据卦象编码获取卦象
     * @param code 卦象编码
     * @return 卦象对象
     */
    Optional<Hexagram> getHexagramByCode(String code);
    
    /**
     * 根据卦名获取卦象
     * @param name 卦名
     * @return 卦象对象
     */
    Optional<Hexagram> getHexagramByName(String name);
    
    /**
     * 根据卦象符号获取卦象
     * @param symbol 卦象符号
     * @return 卦象对象
     */
    Optional<Hexagram> getHexagramBySymbol(String symbol);
    
    /**
     * 获取所有卦象
     * @return 卦象列表
     */
    List<Hexagram> getAllHexagrams();
    
    /**
     * 根据卦象ID获取所有爻辞
     * @param hexagramId 卦象ID
     * @return 爻辞列表
     */
    List<YaoCi> getYaoCiByHexagramId(Long hexagramId);
    
    /**
     * 根据卦象ID和爻位获取爻辞
     * @param hexagramId 卦象ID
     * @param yaoPosition 爻位
     * @return 爻辞对象
     */
    YaoCi getYaoCiByHexagramIdAndPosition(Long hexagramId, Integer yaoPosition);
    
    /**
     * 搜索卦象
     * @param keyword 关键字
     * @return 卦象列表
     */
    List<Hexagram> searchHexagrams(String keyword);
    
    /**
     * 根据五行属性获取卦象
     * @param fiveElements 五行属性
     * @return 卦象列表
     */
    List<Hexagram> getHexagramsByFiveElements(String fiveElements);
}